
#ifndef _BSP_DMA_C
#define _BSP_DMA_C

/********************************************************************************************
*file description:
*
*
*
*Created by Evan @2025/02/20
*Copyright (c) 2025,  Inc.
********************************************************************************************/
/********************************************************************************************
* include:
********************************************************************************************/
#include "BSP_Config.h"
#include "bsp_dma.h"

/********************************************************************************************
* Define:
********************************************************************************************/


/********************************************************************************************
* Datas:
********************************************************************************************/


/********************************************************************************************
* Function:
********************************************************************************************/
/********************************************************************************************
* Function Name  : bsp_dma_ch0_init
* Description    : 
* Input          : void
* Output         : void
* Return         : none
********************************************************************************************/
void bsp_dma_ch0_init(void)
{
    dma_parameter_struct dma_init_struct;

    /* enable DMA clock */
    rcu_periph_clock_enable(RCU_DMA);

    /* deinitialize DMA channel1 */
    dma_deinit(DMA_CH1);
    dma_init_struct.direction = DMA_MEMORY_TO_PERIPHERAL;
    dma_init_struct.memory_addr = 0;
    dma_init_struct.memory_inc = DMA_MEMORY_INCREASE_ENABLE;
    dma_init_struct.memory_width = DMA_MEMORY_WIDTH_8BIT;
    dma_init_struct.number = 0;
    dma_init_struct.periph_addr = ((uint32_t)&USART_TDATA(USART0));

    dma_init_struct.periph_inc = DMA_PERIPH_INCREASE_DISABLE;
    dma_init_struct.periph_width = DMA_PERIPHERAL_WIDTH_8BIT;
    dma_init_struct.priority = DMA_PRIORITY_ULTRA_HIGH;
    dma_init(DMA_CH1, &dma_init_struct);

    /* configure DMA mode */
    dma_circulation_disable(DMA_CH1);

    dma_memory_to_memory_disable(DMA_CH1);
    /* enable DMA channel1 */

    dma_channel_enable(DMA_CH1);

    // /* USART DMA enable for transmission and reception */
    usart_dma_transmit_config(USART0, USART_DENT_ENABLE);
}

#endif
